perm filename ANSWER.PUB[1,JRA] blob sn#065020 filedate 1973-10-02 generic text, type C, neo UTF8
COMMENT ⊗   VALID 00002 PAGES
C REC  PAGE   DESCRIPTION
C00001 00001
C00002 00002	SECTION 6. Question Answering.
C00005 ENDMK
C⊗;
SECTION 6. Question Answering.
.SKIP 3
.BEGIN DOUBLE SPACE
A subset of the Luckham-Nilsson answer-extraction algorithm has been implemented.
It is not  available as part of the basic prover, but must be loaded by the user.
The prover should be run in  slightly more core to accommodate the answer routines.

Here is an example:

.BEGIN VERBATIM
Recall example 2. in the introduction:

(1) ∀(x,y)P(x,y)∧P(y,z)⊃G(x,z)
(2) ∀y∃xP(x,y)
Question:(3) ∃(x,y)G(x,y) .
.END

From the semantics of the problem we know that the "answer" to (3) is
"yes" and in fact we can display specific solutions to the problem:  The
parent of the parent  is the grandparent.
What does the answer extractor do with this problem?


.BEGIN VERBATIM

R PROVER		;get the prover
(DSKIN (P,JRA) ANSWER)	;load in answer extractor 
(PROVE DSK: EX2)	
    ...
[output as before]
    ...
*(ANSWER)		;this calls the extractor
*G(G21(G21(x)),x)	;the answer
*
.END
We must now interpret the Skolem function G21.  G21 was introduced in the
translation of (2), that is, G21(y) is an object such that P(G21(y),y).
Thus G21 is a function to select the parent of an individual.  In this
light our answer, G(G21(G21(x)),x), is the expected result.

The current implementation of the answer extractor does not  recognize
applications of the equality rule and will fail to get answers in this case.
It is trivial to extend the algorithm and its implementation will occur
shortly.

.END